import eslintConfig from '@csui/eslint-config'
import { FlatCompat } from '@eslint/eslintrc'

/**
 * @description 某些暂不支持 flat config 配置的 eslint 插件，可以通过 FlatCompat 类进行兼容性扩展
 * @see https://github.com/eslint/eslintrc
 */
const flatCompat = new FlatCompat()

export default [
  ...flatCompat.config({}),
  ...eslintConfig,
  {
    ignores: [
      '*.sh',
      'node_modules',
      'lib',
      '*.md',
      '*.scss',
      '*.woff',
      '*.ttf',
      '.vscode',
      '.csdev',
      '.idea',
      '.storybook',
      'dist',
      'public',
      'bin',
      'build',
      'config',
      'index.html',
      'src/assets'
    ]
  },
  /**
   * @description @stylistic rules，集合了 Eslint 代码风格规则，包含了从 Eslint Core 和 @typescript-eslint 中迁移的规则
   * @see https://eslint.style/rules
   */
  {
    rules: {
      'id-length': 'off'
    }
  },
  /**
   * @description eslint-plugin-unicorn rules
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn
   */
  {
    rules: {
      'unicorn/filename-case': [
        'error',
        {
          case: 'kebabCase',
          ignore: [
            'App.vue'
          ]
        }
      ],
      'unicorn/no-null': 'off',
      // 不允许使用单词简写
      'unicorn/prevent-abbreviations': 'off'
    }
  },
  /**
   * apifox 自动生成代码使用驼峰文件名
   */
  {
    files: ['**/src/types/vdto/**', '**/src/api/**'],
    rules: {
      // 小写连接符文件名
      'unicorn/filename-case': 'off'
    }
  },
  /**
   * @description eslint-plugin-unicorn rules
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn?tab=readme-ov-file#rules
   */
  {
    rules: {
      // 不允许使用单词简写
      'unicorn/prevent-abbreviations': ['warn', {
        replacements: {
          prop: false,
          props: false,
          res: false,
          str: false,
          params: false,
          arr: false,
          ref: false,
          num: false,
          tmp: false,
          dev: false,
          env: false,
          el: false,
          src: false
        }
      }]
    }
  },
  /**
   * apifox 自动生成代码使用驼峰文件名
   */
  {
    files: ['**/src/types/vdto/**', '**/src/api/**'],
    rules: {
      // 小写连接符文件名
      'unicorn/filename-case': 'off'
    }
  },
  {
    rules: {
      'no-undefined': 'off'
    }
  }
]
